package com.all.seria.serialize;

/**
 * @Author LY
 * @create 2024/5/10 15:00
 * @Description 序列化
 */
public interface Serializer {

    /**
     * 序列化
     *
     * @param obj 要序列化的对象
     * @return 字节数组
     */
    <T> byte[] serialize(T obj);

    /**
     * 反序列化
     *
     * @param data 序列化后的字节数组
     * @param cls 目标类
     * @param <T>   类的类型。举个例子,  {@code String.class} 的类型是 {@code Class<String>}.
     *              如果不知道类的类型的话，使用 {@code Class<?>}
     * @return 反序列化的对象
     */
    <T> T deserialize(byte[] data, Class<T> cls);
}
